// 情况一:// pId 对应父级 id let list= [ { pId: '-1', id: '0', name: '1' }, { pId: '0', id: '1', name: '1-1' }, { pId: '0', id: '2', name: '1-2' }, { pId: '2', id: '21', name: '1-2-1' }, ] function getList(list) { let result= {} let data= {} // 数组转 键值对 list.forEach(item => { result[item.id] = item }) let resultKeys = Object.keys(result) resultKeys.forEach(key => { // 获取当前项 let item = result[key] // 当前项 pId let temPId = item.pId // 获取父级项 let ItemByPid = result[itemPId] if (ItemByPid) { if (!ItemByPid.children) { ItemByPid.children = [] } ItemByPid.children.push(item) } else { data[item.id] = item } }) // 对象转数组并返回 return Object.keys(data).map(key => data[key]) }
// 情况二: // 数据源 let list= [ {name_1: 'name_1...'}, {name_2: 'name_4...'}, {name_3: 'name_3...'}, {name_0: 'name_0...'}, ].reverse() // 最终想要的数据形式 // {name_1: 'name_1...', // children: [ // {name_2: 'name_2...', // children: [ // {name_3: 'name_3...'}, // ] // } // ] // } let result = {} let key ='children' getList(list) function getList(arrs) { arrs.forEach((item, i) => { console.log('---'+ i + ': ', result) if (!result[key]) { result[key] = [item] } else { itemkey] = [result] result = item } }) } console.log(result)
|